package com.ucode.model.cgms.convert;

import com.ucode.model.cgms.CgmsCommissionFlow;
import com.ucode.model.cgms.form.CgmsCommissionFlowForm;
import com.ucode.model.cgms.vo.CgmsCommissionFlowVO;
import com.ucode.tool.base.Paginator;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * 佣金流水转换器
 * @Author: Claude
 * @Date: 2023/05/26 13:35
 * @Version: 1.0
 */
@Mapper
public interface CgmsCommissionFlowConvert {

    CgmsCommissionFlowConvert INSTANCE = Mappers.getMapper(CgmsCommissionFlowConvert.class);

    /**
     * Form转Entity
     * @param form 表单
     * @return 实体
     */
    CgmsCommissionFlow convert(CgmsCommissionFlowForm form);

    /**
     * Entity转VO
     * @param entity 实体
     * @return VO
     */
    CgmsCommissionFlowVO convert(CgmsCommissionFlow entity);

    /**
     * 更新Entity
     * @param form 表单
     * @param entity 实体
     */
    void update(CgmsCommissionFlowForm form, @MappingTarget CgmsCommissionFlow entity);

    /**
     * Entity列表转VO列表
     * @param list 实体列表
     * @return VO列表
     */
    List<CgmsCommissionFlowVO> convertList(List<CgmsCommissionFlow> list);

    /**
     * 转换分页结果
     * @param page 实体分页
     * @return VO分页
     */
    Paginator<CgmsCommissionFlowVO> convertPage(Paginator<CgmsCommissionFlow> page);
} 